question-store
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
Similar to question-cache, but persists answers to disk and supports locales and storing answers based on current working directory.
(TOC generated by verb using markdown-toc)
Install
Install with npm:
$ npm i question-store --save
Usage
var Questions = require('question-store');
API
Questions
Create an instance of Questions
with the given options
.
Params
options
{Object}: question store options
Example
var Questions = new Questions(options);
Cache a question to be asked at a later point. Creates an instance of Question, so any Question
options or settings may be used.
Params
value
{Object|String}: Question object, message (string), or options object.locale
{String}: Optionally pass the locale to use, otherwise the default locale is used.
Example
questions.set('drink', 'What is your favorite beverage?');
questions.set('drink', {
type: 'input',
message: 'What is your favorite beverage?'
});
questions.set({
name: 'drink'
type: 'input',
message: 'What is your favorite beverage?'
});
Get question name
, or group name
if question is not found. You can also do a direct lookup using quesions.cache['foo']
.
Params
name
{String}returns
{Object}: Returns the question object.
Example
var name = questions.get('name');
Returns true if questions.cache
or questions.groups
has question name
.
returns
{String}: The name of the question to check
Example
var name = questions.has('name');
Delete the given question or group.
returns
{String}: The name of the question to delete
Example
questions.del('name');
questions.get('name');
Set the answer for question name
at the current cwd.
Optionally specify a locale to set, otherwise the answer is set
for the default locale.
Params
name
{String}locale
{String}returns
{Object}: Returns the answer object.
Example
questions.setAnswer('name', 'Jack');
questions.getAnswer('name');
questions.setAnswer('name', 'fr');
questions.getAnswer('name');
questions.getAnswer('name', 'fr');
Get the answer for question name
at the current cwd.
Optionally specify a locale to get, otherwise the default locale's
answer is returend.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.getAnswer('name');
var name = questions.getAnswer('name', 'fr');
Delete the answer for question name
for the current (or given) locale.
Params
name
{String}: Question namelocale
{String}: Optionally pass a locale
Example
question.delAnswer(locale);
Add a question that will have its answer stored as a default value.
Params
name
{String}val
{Object}options
{Object}
Example
questions.setDefault('author.name', 'What is your name?');
Set the default answer object for question name
for the current locale. Optionally specify a locale to set the default answer for that locale.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.setDefault('name');
var name = questions.setDefault('name', 'fr');
Get the default answer object for question name
for the current locale. Optionally specify a locale to get the default answer for that locale.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.getDefault('name');
var name = questions.getDefault('name', 'fr');
Return true if question name
has been answered for the current locale and the current working directory.
Params
name
{String}: Question namelocale
{String}: Optionally pass a locale
Example
question.isAnswered(locale);
Set data to be used for answering questions, or as default answers when force
is true.
Params
key
{String|Object}: Property name to set, or object to merge onto questions.data
val
{any}: The value to assign to key
Example
questions.setData('foo', 'bar');
questions.setData({foo: 'bar'});
Return true if property key
has a value on questions.data
.
Params
key
{String}: The property to lookup.returns
{Boolean}
Example
questions.hasData('abc');
Get the value of property key
from questions.data
.
Params
key
{String}: The property to get.returns
{any}: Returns the value of property key
Example
questions.setData('foo', 'bar');
questions.getData('foo');
Get the question
instance stored for the given name
. This is the entire Question
object, with all answers for all locales and directories.
Params
name
{String}returns
{Object}: Returns the question instance.
Example
var name = questions.question('name');
Delete a question.
Params
name
{String}: The question to delete.
Example
question.deleteQuestion(name);
Get a group with the given key
. If key
has a dot, only the substring before the dot is used for the lookup.
Params
key
{String}returns
{Object}
Example
questions
.set('author.name', 'Author name?')
.set('author.url', 'Author url?')
.set('project.name', 'Project name?')
.set('project.url', 'Project url?')
var group = questions.getGroup('author');
questions.ask(group, function(err, answers) {
});
Delete answers for all questions for the current (or given) locale.
Params
locale
{String}: Optionally pass a locale
Example
question.deleteAll(locale);
Erase all answers for question name
from the file system.
Params
name
{String}: Question name
Example
question.erase(name);
Ask one or more questions, with the given options
and callback.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback function
Example
questions.ask(['name', 'description'], function(err, answers) {
console.log(answers);
});
Get a the index of question name
from the queue.
Params
name
{String}returns
{Object}
Example
questions.getIndex('author');
Remove a question from the queue.
Params
items
{Object}: Object of views
Example
console.log(questions.queue);
questions.unqueue('a');
Question
Create new Question
store name
, with the given options
.
Params
name
{String}: The question property name.options
{Object}: Store options
Example
var question = new Question(name, options);
Set the answer to the question for the current (or given) locale, at the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.setAnswer('foo');
Get the answer for the current (or given) locale for the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.getAnswer(locale);
Delete the answer for the current (or given) locale and the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.delAnswer(locale);
Set the default answer to use for the current (or given) locale, at the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.setDefault('foo');
Get the default answer for the current (or given) locale
Params
locale
{String}: Optionally pass a locale
Example
question.getDefault();
Return true if the question has been given a default answer for the current (or given) locale, at the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.hasDefault('es');
Delete the answer store (all answers for the question) from the file system.
Example
question.eraseAnswer();
Return true if the question has been answered for the current locale and the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.isAnswered(locale);
Return true if the question will be forced (asked even if it already has an answer).
Example
question.options.force = true;
question.isForced();
Ask the question.
- If an answer has already been stored for the current locale and cwd it will be returned directly without asking the question.
- If
options.force
is true, the answer will be asked asked even if the answer is already stored. - If
options.save
is false, the answer will not be persisted to the file system, and the question will be re-asked each time .ask()
is called (which means it's also not necessary to define force
when save
is false).
Params
options
{Object|Function}: Question options or callback functioncallback
{Function}: callback function
Example
question.ask({force: true}, function(err, answer) {
console.log(answer);
});
Related projects
- answer-store: Store answers to user prompts, based on locale and/or current working directory. | homepage
- inquirer: A collection of common interactive command line user interfaces. | homepage
- question-cache: A wrapper around inquirer that makes it easy to create and selectively reuse questions. | homepage
Running tests
Install dev dependencies:
$ npm i -d && npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Author
Jon Schlinkert
License
Copyright © 2016 Jon Schlinkert
Released under the MIT license.
This file was generated by verb on January 14, 2016.